package Principal;
/**
 * Utilisateur est une classe qui représente un Utilisateur
 * Utilisateur hérite de la classe Sommet
 * Utilisateur est caractérisé par un age et un prenom
 */
public class Utilisateur extends Sommet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * L'age de l'Utilisateur
	 */
	private int age;
	
	/**
	 * Le prénom de l'Utilisateur
	 */
	private String prenom;
	
	/**
	 * Constructeur de Utilisateur.
	 * @param nom
	 *		Le nom de l'Utilisateur créé.
	 * @param prenom1
	 * 		le prenom de l'Utilisateur créé.
	 * @param age1
	 * 		l'age de l'Utilisateur créé.
	 * A la construction d'un objet Utilisateur, on appelle le Constructeur de Sommet
	 */
	public Utilisateur (String nom, String prenom1, int age1){
		super(nom);
		prenom = prenom1;
		age = age1;
	}

	/**
	 * Retourne l'age.
	 * @return l'age de l'Utilisateur.
	 */
	public int getAge() {
		return age;
	}

	/**
	 * Met à jour l'age de l'Utilisateur
	 * @param age
	 * 		le nouvel age de l'Utilisateur
	 */
	public void setAge(int age) {
		this.age = age;
	}

	/**
	 * Retourne le prenom
	 * @return le prenom de l'Utilisateur
	 */
	public String getPrenom() {
		return prenom;
	}

	/**
	 * Met à jour le prenom de l'Utilisateur
	 * @param prenom
	 * 		Nouveau prenom de l'Utilisateur
	 */
	public void setPrenom(String prenom) {
		this.prenom = prenom;
	}
	
	/**
	 * Retourne une phrase descriptive de Utilisateur.
	 * @return String d'une description de Utilisateur.
	 */
	public String toString (){
		return "[Type : Utilisateur, Nom : "+nom+", rank : "+super.getRank()+", Prenom : "+prenom+", Age : "+age+", Nombre de voisins sortants : "+nbVoisinsSortants()+"]";
	}

	/**
	 * Vérifie si deux objets sont identiques.
	 * @return un booléen
	 */
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Utilisateur other = (Utilisateur) obj;
		if (age != other.age)
			return false;
		if (prenom == null) {
			if (other.prenom != null)
				return false;
		} else if (!prenom.equals(other.prenom))
			return false;
		return true;
	}
	
	
}
